{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# TensorFlow Tutorial\n",
    "\n",
    "Welcome to this week's programming assignment. Until now, you've always used numpy to build neural networks. Now we will step you through a deep learning framework that will allow you to build neural networks more easily. Machine learning frameworks like TensorFlow, PaddlePaddle, Torch, Caffe, Keras, and many others can speed up your machine learning development significantly. All of these frameworks also have a lot of documentation, which you should feel free to read. In this assignment, you will learn to do the following in TensorFlow: \n",
    "\n",
    "- Initialize variables\n",
    "- Start your own session\n",
    "- Train algorithms \n",
    "- Implement a Neural Network\n",
    "\n",
    "Programing frameworks can not only shorten your coding time, but sometimes also perform optimizations that speed up your code. \n",
    "\n",
    "## 1 - Exploring the Tensorflow Library\n",
    "\n",
    "To start, you will import the library:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "import h5py\n",
    "import matplotlib.pyplot as plt\n",
    "import tensorflow as tf\n",
    "from tensorflow.python.framework import ops\n",
    "from tf_utils import load_dataset, random_mini_batches, convert_to_one_hot, predict\n",
    "\n",
    "%matplotlib inline\n",
    "np.random.seed(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that you have imported the library, we will walk you through its different applications. You will start with an example, where we compute for you the loss of one training example. \n",
    "$$loss = \\mathcal{L}(\\hat{y}, y) = (\\hat y^{(i)} - y^{(i)})^2 \\tag{1}$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9\n"
     ]
    }
   ],
   "source": [
    "y_hat = tf.constant(36, name='y_hat')            # Define y_hat constant. Set to 36.\n",
    "y = tf.constant(39, name='y')                    # Define y. Set to 39\n",
    "\n",
    "loss = tf.Variable((y - y_hat)**2, name='loss')  # Create a variable for the loss\n",
    "\n",
    "init = tf.global_variables_initializer()         # When init is run later (session.run(init)),\n",
    "                                                 # the loss variable will be initialized and ready to be computed\n",
    "with tf.Session() as session:                    # Create a session and print the output\n",
    "    session.run(init)                            # Initializes the variables\n",
    "    print(session.run(loss))                     # Prints the loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Writing and running programs in TensorFlow has the following steps:\n",
    "\n",
    "1. Create Tensors (variables) that are not yet executed/evaluated. \n",
    "2. Write operations between those Tensors.\n",
    "3. Initialize your Tensors. \n",
    "4. Create a Session. \n",
    "5. Run the Session. This will run the operations you'd written above. \n",
    "\n",
    "Therefore, when we created a variable for the loss, we simply defined the loss as a function of other quantities, but did not evaluate its value. To evaluate it, we had to run `init=tf.global_variables_initializer()`. That initialized the loss variable, and in the last line we were finally able to evaluate the value of `loss` and print its value.\n",
    "\n",
    "Now let us look at an easy example. Run the cell below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tensor(\"Mul:0\", shape=(), dtype=int32)\n"
     ]
    }
   ],
   "source": [
    "a = tf.constant(2)\n",
    "b = tf.constant(10)\n",
    "c = tf.multiply(a,b)\n",
    "print(c)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As expected, you will not see 20! You got a tensor saying that the result is a tensor that does not have the shape attribute, and is of type \"int32\". All you did was put in the 'computation graph', but you have not run this computation yet. In order to actually multiply the two numbers, you will have to create a session and run it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20\n"
     ]
    }
   ],
   "source": [
    "sess = tf.Session()\n",
    "print(sess.run(c))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Great! To summarize, **remember to initialize your variables, create a session and run the operations inside the session**. \n",
    "\n",
    "Next, you'll also have to know about placeholders. A placeholder is an object whose value you can specify only later. \n",
    "To specify values for a placeholder, you can pass in values by using a \"feed dictionary\" (`feed_dict` variable). Below, we created a placeholder for x. This allows us to pass in a number later when we run the session. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6\n"
     ]
    }
   ],
   "source": [
    "# Change the value of x in the feed_dict\n",
    "\n",
    "x = tf.placeholder(tf.int64, name = 'x')\n",
    "print(sess.run(2 * x, feed_dict = {x: 3}))\n",
    "sess.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When you first defined `x` you did not have to specify a value for it. A placeholder is simply a variable that you will assign data to only later, when running the session. We say that you **feed data** to these placeholders when running the session. \n",
    "\n",
    "Here's what's happening: When you specify the operations needed for a computation, you are telling TensorFlow how to construct a computation graph. The computation graph can have some placeholders whose values you will specify only later. Finally, when you run the session, you are telling TensorFlow to execute the computation graph."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.1 - Linear function\n",
    "\n",
    "Lets start this programming exercise by computing the following equation: $Y = WX + b$, where $W$ and $X$ are random matrices and b is a random vector. \n",
    "\n",
    "**Exercise**: Compute $WX + b$ where $W, X$, and $b$ are drawn from a random normal distribution. W is of shape (4, 3), X is (3,1) and b is (4,1). As an example, here is how you would define a constant X that has shape (3,1):\n",
    "```python\n",
    "X = tf.constant(np.random.randn(3,1), name = \"X\")\n",
    "\n",
    "```\n",
    "You might find the following functions helpful: \n",
    "- tf.matmul(..., ...) to do a matrix multiplication\n",
    "- tf.add(..., ...) to do an addition\n",
    "- np.random.randn(...) to initialize randomly\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: linear_function\n",
    "\n",
    "def linear_function():\n",
    "    \"\"\"\n",
    "    Implements a linear function: \n",
    "            Initializes W to be a random tensor of shape (4,3)\n",
    "            Initializes X to be a random tensor of shape (3,1)\n",
    "            Initializes b to be a random tensor of shape (4,1)\n",
    "    Returns: \n",
    "    result -- runs the session for Y = WX + b \n",
    "    \"\"\"\n",
    "    \n",
    "    np.random.seed(1)\n",
    "    \n",
    "    ### START CODE HERE ### (4 lines of code)\n",
    "    X = tf.constant(np.random.randn(3,1),name = \"X\")\n",
    "    W = tf.constant(np.random.randn(4,3),name = \"W\")\n",
    "    b = tf.constant(np.random.randn(4,1), name = \"b\")\n",
    "    Y = tf.add(tf.matmul(W,X),b)\n",
    "    ### END CODE HERE ### \n",
    "    \n",
    "    # Create the session using tf.Session() and run it with sess.run(...) on the variable you want to calculate\n",
    "    \n",
    "    ### START CODE HERE ###\n",
    "    sess = tf.Session()\n",
    "    result = sess.run(Y)\n",
    "    ### END CODE HERE ### \n",
    "    \n",
    "    # close the session \n",
    "    sess.close()\n",
    "\n",
    "    return result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "result = [[-2.15657382]\n",
      " [ 2.95891446]\n",
      " [-1.08926781]\n",
      " [-0.84538042]]\n"
     ]
    }
   ],
   "source": [
    "print( \"result = \" + str(linear_function()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*** Expected Output ***: \n",
    "\n",
    "<table> \n",
    "<tr> \n",
    "<td>\n",
    "**result**\n",
    "</td>\n",
    "<td>\n",
    "[[-2.15657382]\n",
    " [ 2.95891446]\n",
    " [-1.08926781]\n",
    " [-0.84538042]]\n",
    "</td>\n",
    "</tr> \n",
    "\n",
    "</table> "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.2 - Computing the sigmoid \n",
    "Great! You just implemented a linear function. Tensorflow offers a variety of commonly used neural network functions like `tf.sigmoid` and `tf.softmax`. For this exercise lets compute the sigmoid function of an input. \n",
    "\n",
    "You will do this exercise using a placeholder variable `x`. When running the session, you should use the feed dictionary to pass in the input `z`. In this exercise, you will have to (i) create a placeholder `x`, (ii) define the operations needed to compute the sigmoid using `tf.sigmoid`, and then (iii) run the session. \n",
    "\n",
    "** Exercise **: Implement the sigmoid function below. You should use the following: \n",
    "\n",
    "- `tf.placeholder(tf.float32, name = \"...\")`\n",
    "- `tf.sigmoid(...)`\n",
    "- `sess.run(..., feed_dict = {x: z})`\n",
    "\n",
    "\n",
    "Note that there are two typical ways to create and use sessions in tensorflow: \n",
    "\n",
    "**Method 1:**\n",
    "```python\n",
    "sess = tf.Session()\n",
    "# Run the variables initialization (if needed), run the operations\n",
    "result = sess.run(..., feed_dict = {...})\n",
    "sess.close() # Close the session\n",
    "```\n",
    "**Method 2:**\n",
    "```python\n",
    "with tf.Session() as sess: \n",
    "    # run the variables initialization (if needed), run the operations\n",
    "    result = sess.run(..., feed_dict = {...})\n",
    "    # This takes care of closing the session for you :)\n",
    "```\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: sigmoid\n",
    "\n",
    "def sigmoid(z):\n",
    "    \"\"\"\n",
    "    Computes the sigmoid of z\n",
    "    \n",
    "    Arguments:\n",
    "    z -- input value, scalar or vector\n",
    "    \n",
    "    Returns: \n",
    "    results -- the sigmoid of z\n",
    "    \"\"\"\n",
    "    \n",
    "    ### START CODE HERE ### ( approx. 4 lines of code)\n",
    "    # Create a placeholder for x. Name it 'x'.\n",
    "    x = tf.placeholder(tf.float32)\n",
    "\n",
    "    # compute sigmoid(x)\n",
    "    sigmoid = tf.sigmoid(x)\n",
    "\n",
    "    # Create a session, and run it. Please use the method 2 explained above. \n",
    "    # You should use a feed_dict to pass z's value to x. \n",
    "    with tf.Session() as sess:\n",
    "        # Run session and call the output \"result\"\n",
    "        result = sess.run(sigmoid,feed_dict={x:z})\n",
    "    \n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    return result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sigmoid(0) = 0.5\n",
      "sigmoid(12) = 0.999994\n"
     ]
    }
   ],
   "source": [
    "print (\"sigmoid(0) = \" + str(sigmoid(0)))\n",
    "print (\"sigmoid(12) = \" + str(sigmoid(12)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*** Expected Output ***: \n",
    "\n",
    "<table> \n",
    "<tr> \n",
    "<td>\n",
    "**sigmoid(0)**\n",
    "</td>\n",
    "<td>\n",
    "0.5\n",
    "</td>\n",
    "</tr>\n",
    "<tr> \n",
    "<td>\n",
    "**sigmoid(12)**\n",
    "</td>\n",
    "<td>\n",
    "0.999994\n",
    "</td>\n",
    "</tr> \n",
    "\n",
    "</table> "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color='blue'>\n",
    "**To summarize, you how know how to**:\n",
    "1. Create placeholders\n",
    "2. Specify the computation graph corresponding to operations you want to compute\n",
    "3. Create the session\n",
    "4. Run the session, using a feed dictionary if necessary to specify placeholder variables' values. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.3 -  Computing the Cost\n",
    "\n",
    "You can also use a built-in function to compute the cost of your neural network. So instead of needing to write code to compute this as a function of $a^{[2](i)}$ and $y^{(i)}$ for i=1...m: \n",
    "$$ J = - \\frac{1}{m}  \\sum_{i = 1}^m  \\large ( \\small y^{(i)} \\log a^{ [2] (i)} + (1-y^{(i)})\\log (1-a^{ [2] (i)} )\\large )\\small\\tag{2}$$\n",
    "\n",
    "you can do it in one line of code in tensorflow!\n",
    "\n",
    "**Exercise**: Implement the cross entropy loss. The function you will use is: \n",
    "\n",
    "\n",
    "- `tf.nn.sigmoid_cross_entropy_with_logits(logits = ...,  labels = ...)`\n",
    "\n",
    "Your code should input `z`, compute the sigmoid (to get `a`) and then compute the cross entropy cost $J$. All this can be done using one call to `tf.nn.sigmoid_cross_entropy_with_logits`, which computes\n",
    "\n",
    "$$- \\frac{1}{m}  \\sum_{i = 1}^m  \\large ( \\small y^{(i)} \\log \\sigma(z^{[2](i)}) + (1-y^{(i)})\\log (1-\\sigma(z^{[2](i)})\\large )\\small\\tag{2}$$\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: cost\n",
    "\n",
    "def cost(logits, labels):\n",
    "    \"\"\"\n",
    "    Computes the cost using the sigmoid cross entropy\n",
    "    \n",
    "    Arguments:\n",
    "    logits -- vector containing z, output of the last linear unit (before the final sigmoid activation)\n",
    "    labels -- vector of labels y (1 or 0) \n",
    "    \n",
    "    Note: What we've been calling \"z\" and \"y\" in this class are respectively called \"logits\" and \"labels\" \n",
    "    in the TensorFlow documentation. So logits will feed into z, and labels into y. \n",
    "    \n",
    "    Returns:\n",
    "    cost -- runs the session of the cost (formula (2))\n",
    "    \"\"\"\n",
    "    \n",
    "    ### START CODE HERE ### \n",
    "    \n",
    "    # Create the placeholders for \"logits\" (z) and \"labels\" (y) (approx. 2 lines)\n",
    "    z = tf.placeholder(tf.float32)\n",
    "    y = tf.placeholder(tf.float32)\n",
    "    \n",
    "    # Use the loss function (approx. 1 line)\n",
    "    cost = tf.nn.sigmoid_cross_entropy_with_logits(logits = z, labels = y)\n",
    "    \n",
    "    # Create a session (approx. 1 line). See method 1 above.\n",
    "    sess = tf.Session()\n",
    "    \n",
    "    # Run the session (approx. 1 line).\n",
    "    cost = sess.run(cost, feed_dict = {z : logits, y:labels})\n",
    "    \n",
    "    # Close the session (approx. 1 line). See method 1 above.\n",
    "    sess.close()\n",
    "    \n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    return cost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cost = [ 1.00538719  1.03664088  0.41385433  0.39956614]\n"
     ]
    }
   ],
   "source": [
    "logits = sigmoid(np.array([0.2,0.4,0.7,0.9]))\n",
    "cost = cost(logits, np.array([0,0,1,1]))\n",
    "print (\"cost = \" + str(cost))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** Expected Output** : \n",
    "\n",
    "<table> \n",
    "    <tr> \n",
    "        <td>\n",
    "            **cost**\n",
    "        </td>\n",
    "        <td>\n",
    "        [ 1.00538719  1.03664088  0.41385433  0.39956614]\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.4 - Using One Hot encodings\n",
    "\n",
    "Many times in deep learning you will have a y vector with numbers ranging from 0 to C-1, where C is the number of classes. If C is for example 4, then you might have the following y vector which you will need to convert as follows:\n",
    "\n",
    "\n",
    "<img src=\"images/onehot.png\" style=\"width:600px;height:150px;\">\n",
    "\n",
    "This is called a \"one hot\" encoding, because in the converted representation exactly one element of each column is \"hot\" (meaning set to 1). To do this conversion in numpy, you might have to write a few lines of code. In tensorflow, you can use one line of code: \n",
    "\n",
    "- tf.one_hot(labels, depth, axis) \n",
    "\n",
    "**Exercise:** Implement the function below to take one vector of labels and the total number of classes $C$, and return the one hot encoding. Use `tf.one_hot()` to do this. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: one_hot_matrix\n",
    "\n",
    "def one_hot_matrix(labels, C):\n",
    "    \"\"\"\n",
    "    Creates a matrix where the i-th row corresponds to the ith class number and the jth column\n",
    "                     corresponds to the jth training example. So if example j had a label i. Then entry (i,j) \n",
    "                     will be 1. \n",
    "                     \n",
    "    Arguments:\n",
    "    labels -- vector containing the labels \n",
    "    C -- number of classes, the depth of the one hot dimension\n",
    "    \n",
    "    Returns: \n",
    "    one_hot -- one hot matrix\n",
    "    \"\"\"\n",
    "    \n",
    "    ### START CODE HERE ###\n",
    "    \n",
    "    # Create a tf.constant equal to C (depth), name it 'C'. (approx. 1 line)\n",
    "    C = tf.constant(C, name = \"C\")\n",
    "    \n",
    "    # Use tf.one_hot, be careful with the axis (approx. 1 line)\n",
    "    one_hot_matrix = tf.one_hot(labels,C)\n",
    "    \n",
    "    # Create the session (approx. 1 line)\n",
    "    sess = tf.Session()\n",
    "    \n",
    "    # Run the session (approx. 1 line)\n",
    "    one_hot = sess.run(one_hot_matrix)\n",
    "    \n",
    "    # Close the session (approx. 1 line). See method 1 above.\n",
    "    sess.close()\n",
    "    \n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    return one_hot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "one_hot = [[ 0.  1.  0.  0.]\n",
      " [ 0.  0.  1.  0.]\n",
      " [ 0.  0.  0.  1.]\n",
      " [ 1.  0.  0.  0.]\n",
      " [ 0.  0.  1.  0.]\n",
      " [ 0.  1.  0.  0.]]\n"
     ]
    }
   ],
   "source": [
    "labels = np.array([1,2,3,0,2,1])\n",
    "one_hot = one_hot_matrix(labels, C = 4)\n",
    "print (\"one_hot = \" + str(one_hot))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**: \n",
    "\n",
    "<table> \n",
    "    <tr> \n",
    "        <td>\n",
    "            **one_hot**\n",
    "        </td>\n",
    "        <td>\n",
    "        [[ 0.  0.  0.  1.  0.  0.]\n",
    " [ 1.  0.  0.  0.  0.  1.]\n",
    " [ 0.  1.  0.  0.  1.  0.]\n",
    " [ 0.  0.  1.  0.  0.  0.]]\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.5 - Initialize with zeros and ones\n",
    "\n",
    "Now you will learn how to initialize a vector of zeros and ones. The function you will be calling is `tf.ones()`. To initialize with zeros you could use tf.zeros() instead. These functions take in a shape and return an array of dimension shape full of zeros and ones respectively. \n",
    "\n",
    "**Exercise:** Implement the function below to take in a shape and to return an array (of the shape's dimension of ones). \n",
    "\n",
    " - tf.ones(shape)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: ones\n",
    "\n",
    "def ones(shape):\n",
    "    \"\"\"\n",
    "    Creates an array of ones of dimension shape\n",
    "    \n",
    "    Arguments:\n",
    "    shape -- shape of the array you want to create\n",
    "        \n",
    "    Returns: \n",
    "    ones -- array containing only ones\n",
    "    \"\"\"\n",
    "    \n",
    "    ### START CODE HERE ###\n",
    "    \n",
    "    # Create \"ones\" tensor using tf.ones(...). (approx. 1 line)\n",
    "    ones = tf.ones(shape)\n",
    "    \n",
    "    # Create the session (approx. 1 line)\n",
    "    sess = tf.Session()\n",
    "    \n",
    "    # Run the session to compute 'ones' (approx. 1 line)\n",
    "    ones = sess.run(ones)\n",
    "    \n",
    "    # Close the session (approx. 1 line). See method 1 above.\n",
    "    sess.close()\n",
    "    \n",
    "    ### END CODE HERE ###\n",
    "    return ones"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ones = [ 1.  1.  1.]\n"
     ]
    }
   ],
   "source": [
    "print (\"ones = \" + str(ones([3])))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output:**\n",
    "\n",
    "<table> \n",
    "    <tr> \n",
    "        <td>\n",
    "            **ones**\n",
    "        </td>\n",
    "        <td>\n",
    "        [ 1.  1.  1.]\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2 - Building your first neural network in tensorflow\n",
    "\n",
    "In this part of the assignment you will build a neural network using tensorflow. Remember that there are two parts to implement a tensorflow model:\n",
    "\n",
    "- Create the computation graph\n",
    "- Run the graph\n",
    "\n",
    "Let's delve into the problem you'd like to solve!\n",
    "\n",
    "### 2.0 - Problem statement: SIGNS Dataset\n",
    "\n",
    "One afternoon, with some friends we decided to teach our computers to decipher sign language. We spent a few hours taking pictures in front of a white wall and came up with the following dataset. It's now your job to build an algorithm that would facilitate communications from a speech-impaired person to someone who doesn't understand sign language.\n",
    "\n",
    "- **Training set**: 1080 pictures (64 by 64 pixels) of signs representing numbers from 0 to 5 (180 pictures per number).\n",
    "- **Test set**: 120 pictures (64 by 64 pixels) of signs representing numbers from 0 to 5 (20 pictures per number).\n",
    "\n",
    "Note that this is a subset of the SIGNS dataset. The complete dataset contains many more signs.\n",
    "\n",
    "Here are examples for each number, and how an explanation of how we represent the labels. These are the original pictures, before we lowered the image resolutoion to 64 by 64 pixels.\n",
    "<img src=\"images/hands.png\" style=\"width:800px;height:350px;\"><caption><center> <u><font color='purple'> **Figure 1**</u><font color='purple'>: SIGNS dataset <br> <font color='black'> </center>\n",
    "\n",
    "\n",
    "Run the following code to load the dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Loading the dataset\n",
    "X_train_orig, Y_train_orig, X_test_orig, Y_test_orig, classes = load_dataset()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Change the index below and run the cell to visualize some examples in the dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "y = 5\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa3b4ed0710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Example of a picture\n",
    "index = 3\n",
    "plt.imshow(X_train_orig[index])\n",
    "print (\"y = \" + str(np.squeeze(Y_train_orig[:, index])))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As usual you flatten the image dataset, then normalize it by dividing by 255. On top of that, you will convert each label to a one-hot vector as shown in Figure 1. Run the cell below to do so."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of training examples = 1080\n",
      "number of test examples = 120\n",
      "X_train shape: (12288, 1080)\n",
      "Y_train shape: (6, 1080)\n",
      "X_test shape: (12288, 120)\n",
      "Y_test shape: (6, 120)\n"
     ]
    }
   ],
   "source": [
    "# Flatten the training and test images\n",
    "X_train_flatten = X_train_orig.reshape(X_train_orig.shape[0], -1).T\n",
    "X_test_flatten = X_test_orig.reshape(X_test_orig.shape[0], -1).T\n",
    "# Normalize image vectors\n",
    "X_train = X_train_flatten/255.\n",
    "X_test = X_test_flatten/255.\n",
    "# Convert training and test labels to one hot matrices\n",
    "Y_train = convert_to_one_hot(Y_train_orig, 6)\n",
    "Y_test = convert_to_one_hot(Y_test_orig, 6)\n",
    "\n",
    "print (\"number of training examples = \" + str(X_train.shape[1]))\n",
    "print (\"number of test examples = \" + str(X_test.shape[1]))\n",
    "print (\"X_train shape: \" + str(X_train.shape))\n",
    "print (\"Y_train shape: \" + str(Y_train.shape))\n",
    "print (\"X_test shape: \" + str(X_test.shape))\n",
    "print (\"Y_test shape: \" + str(Y_test.shape))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Note** that 12288 comes from $64 \\times 64 \\times 3$. Each image is square, 64 by 64 pixels, and 3 is for the RGB colors. Please make sure all these shapes make sense to you before continuing."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Your goal** is to build an algorithm capable of recognizing a sign with high accuracy. To do so, you are going to build a tensorflow model that is almost the same as one you have previously built in numpy for cat recognition (but now using a softmax output). It is a great occasion to compare your numpy implementation to the tensorflow one. \n",
    "\n",
    "**The model** is *LINEAR -> RELU -> LINEAR -> RELU -> LINEAR -> SOFTMAX*. The SIGMOID output layer has been converted to a SOFTMAX. A SOFTMAX layer generalizes SIGMOID to when there are more than two classes. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1 - Create placeholders\n",
    "\n",
    "Your first task is to create placeholders for `X` and `Y`. This will allow you to later pass your training data in when you run your session. \n",
    "\n",
    "**Exercise:** Implement the function below to create the placeholders in tensorflow."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: create_placeholders\n",
    "\n",
    "def create_placeholders(n_x, n_y):\n",
    "    \"\"\"\n",
    "    Creates the placeholders for the tensorflow session.\n",
    "    \n",
    "    Arguments:\n",
    "    n_x -- scalar, size of an image vector (num_px * num_px = 64 * 64 * 3 = 12288)\n",
    "    n_y -- scalar, number of classes (from 0 to 5, so -> 6)\n",
    "    \n",
    "    Returns:\n",
    "    X -- placeholder for the data input, of shape [n_x, None] and dtype \"float\"\n",
    "    Y -- placeholder for the input labels, of shape [n_y, None] and dtype \"float\"\n",
    "    \n",
    "    Tips:\n",
    "    - You will use None because it let's us be flexible on the number of examples you will for the placeholders.\n",
    "      In fact, the number of examples during test/train is different.\n",
    "    \"\"\"\n",
    "\n",
    "    ### START CODE HERE ### (approx. 2 lines)\n",
    "    X = tf.placeholder(tf.float32,[n_x,None],name = \"X\")\n",
    "    Y = tf.placeholder(tf.float32,[n_y,None],name = \"Y\")\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    return X, Y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X = Tensor(\"X:0\", shape=(12288, ?), dtype=float32)\n",
      "Y = Tensor(\"Y:0\", shape=(6, ?), dtype=float32)\n"
     ]
    }
   ],
   "source": [
    "X, Y = create_placeholders(12288, 6)\n",
    "print (\"X = \" + str(X))\n",
    "print (\"Y = \" + str(Y))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**: \n",
    "\n",
    "<table> \n",
    "    <tr> \n",
    "        <td>\n",
    "            **X**\n",
    "        </td>\n",
    "        <td>\n",
    "        Tensor(\"Placeholder_1:0\", shape=(12288, ?), dtype=float32) (not necessarily Placeholder_1)\n",
    "        </td>\n",
    "    </tr>\n",
    "    <tr> \n",
    "        <td>\n",
    "            **Y**\n",
    "        </td>\n",
    "        <td>\n",
    "        Tensor(\"Placeholder_2:0\", shape=(10, ?), dtype=float32) (not necessarily Placeholder_2)\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2 - Initializing the parameters\n",
    "\n",
    "Your second task is to initialize the parameters in tensorflow.\n",
    "\n",
    "**Exercise:** Implement the function below to initialize the parameters in tensorflow. You are going use Xavier Initialization for weights and Zero Initialization for biases. The shapes are given below. As an example, to help you, for W1 and b1 you could use: \n",
    "\n",
    "```python\n",
    "W1 = tf.get_variable(\"W1\", [25,12288], initializer = tf.contrib.layers.xavier_initializer(seed = 1))\n",
    "b1 = tf.get_variable(\"b1\", [25,1], initializer = tf.zeros_initializer())\n",
    "```\n",
    "Please use `seed = 1` to make sure your results match ours."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: initialize_parameters\n",
    "\n",
    "def initialize_parameters():\n",
    "    \"\"\"\n",
    "    Initializes parameters to build a neural network with tensorflow. The shapes are:\n",
    "                        W1 : [25, 12288]\n",
    "                        b1 : [25, 1]\n",
    "                        W2 : [12, 25]\n",
    "                        b2 : [12, 1]\n",
    "                        W3 : [6, 12]\n",
    "                        b3 : [6, 1]\n",
    "    \n",
    "    Returns:\n",
    "    parameters -- a dictionary of tensors containing W1, b1, W2, b2, W3, b3\n",
    "    \"\"\"\n",
    "    \n",
    "    tf.set_random_seed(1)                   # so that your \"random\" numbers match ours\n",
    "        \n",
    "    ### START CODE HERE ### (approx. 6 lines of code)\n",
    "    W1 = tf.get_variable(\"W1\",[25,12288],initializer=tf.contrib.layers.xavier_initializer(seed = 1))\n",
    "    b1 = tf.get_variable(\"b1\",[25,1], initializer = tf.zeros_initializer())\n",
    "    W2 = tf.get_variable(\"W2\",[12,25],initializer=tf.contrib.layers.xavier_initializer(seed = 1))\n",
    "    b2 = tf.get_variable(\"b2\",[12,1], initializer = tf.zeros_initializer())\n",
    "    W3 = tf.get_variable(\"W3\",[6,12],initializer=tf.contrib.layers.xavier_initializer(seed = 1))\n",
    "    b3 = tf.get_variable(\"b3\",[6,1], initializer = tf.zeros_initializer())\n",
    "   \n",
    "    ### END CODE HERE ###\n",
    "\n",
    "    parameters = {\"W1\": W1,\n",
    "                  \"b1\": b1,\n",
    "                  \"W2\": W2,\n",
    "                  \"b2\": b2,\n",
    "                  \"W3\": W3,\n",
    "                  \"b3\": b3}\n",
    "    \n",
    "    return parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "W1 = <tf.Variable 'W1:0' shape=(25, 12288) dtype=float32_ref>\n",
      "b1 = <tf.Variable 'b1:0' shape=(25, 1) dtype=float32_ref>\n",
      "W2 = <tf.Variable 'W2:0' shape=(12, 25) dtype=float32_ref>\n",
      "b2 = <tf.Variable 'b2:0' shape=(12, 1) dtype=float32_ref>\n"
     ]
    }
   ],
   "source": [
    "tf.reset_default_graph()\n",
    "with tf.Session() as sess:\n",
    "    parameters = initialize_parameters()\n",
    "    print(\"W1 = \" + str(parameters[\"W1\"]))\n",
    "    print(\"b1 = \" + str(parameters[\"b1\"]))\n",
    "    print(\"W2 = \" + str(parameters[\"W2\"]))\n",
    "    print(\"b2 = \" + str(parameters[\"b2\"]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**: \n",
    "\n",
    "<table> \n",
    "    <tr> \n",
    "        <td>\n",
    "            **W1**\n",
    "        </td>\n",
    "        <td>\n",
    "         < tf.Variable 'W1:0' shape=(25, 12288) dtype=float32_ref >\n",
    "        </td>\n",
    "    </tr>\n",
    "    <tr> \n",
    "        <td>\n",
    "            **b1**\n",
    "        </td>\n",
    "        <td>\n",
    "        < tf.Variable 'b1:0' shape=(25, 1) dtype=float32_ref >\n",
    "        </td>\n",
    "    </tr>\n",
    "    <tr> \n",
    "        <td>\n",
    "            **W2**\n",
    "        </td>\n",
    "        <td>\n",
    "        < tf.Variable 'W2:0' shape=(12, 25) dtype=float32_ref >\n",
    "        </td>\n",
    "    </tr>\n",
    "    <tr> \n",
    "        <td>\n",
    "            **b2**\n",
    "        </td>\n",
    "        <td>\n",
    "        < tf.Variable 'b2:0' shape=(12, 1) dtype=float32_ref >\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As expected, the parameters haven't been evaluated yet."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3 - Forward propagation in tensorflow \n",
    "\n",
    "You will now implement the forward propagation module in tensorflow. The function will take in a dictionary of parameters and it will complete the forward pass. The functions you will be using are: \n",
    "\n",
    "- `tf.add(...,...)` to do an addition\n",
    "- `tf.matmul(...,...)` to do a matrix multiplication\n",
    "- `tf.nn.relu(...)` to apply the ReLU activation\n",
    "\n",
    "**Question:** Implement the forward pass of the neural network. We commented for you the numpy equivalents so that you can compare the tensorflow implementation to numpy. It is important to note that the forward propagation stops at `z3`. The reason is that in tensorflow the last linear layer output is given as input to the function computing the loss. Therefore, you don't need `a3`!\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: forward_propagation\n",
    "\n",
    "def forward_propagation(X, parameters):\n",
    "    \"\"\"\n",
    "    Implements the forward propagation for the model: LINEAR -> RELU -> LINEAR -> RELU -> LINEAR -> SOFTMAX\n",
    "    \n",
    "    Arguments:\n",
    "    X -- input dataset placeholder, of shape (input size, number of examples)\n",
    "    parameters -- python dictionary containing your parameters \"W1\", \"b1\", \"W2\", \"b2\", \"W3\", \"b3\"\n",
    "                  the shapes are given in initialize_parameters\n",
    "\n",
    "    Returns:\n",
    "    Z3 -- the output of the last LINEAR unit\n",
    "    \"\"\"\n",
    "    \n",
    "    # Retrieve the parameters from the dictionary \"parameters\" \n",
    "    W1 = parameters['W1']\n",
    "    b1 = parameters['b1']\n",
    "    W2 = parameters['W2']\n",
    "    b2 = parameters['b2']\n",
    "    W3 = parameters['W3']\n",
    "    b3 = parameters['b3']\n",
    "    \n",
    "    ### START CODE HERE ### (approx. 5 lines)              # Numpy Equivalents:\n",
    "    Z1 = tf.add(tf.matmul(W1,X),b1)                                             # Z1 = np.dot(W1, X) + b1\n",
    "    A1 = tf.nn.relu(Z1)                                              # A1 = relu(Z1)\n",
    "    Z2 = tf.add(tf.matmul(W2,A1),b2)                                                # Z2 = np.dot(W2, a1) + b2\n",
    "    A2 = tf.nn.relu(Z2)                                              # A2 = relu(Z2)\n",
    "    Z3 = tf.add(tf.matmul(W3,A2),b3)                                                # Z3 = np.dot(W3,Z2) + b3\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    return Z3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Z3 = Tensor(\"Add_2:0\", shape=(6, ?), dtype=float32)\n"
     ]
    }
   ],
   "source": [
    "tf.reset_default_graph()\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    X, Y = create_placeholders(12288, 6)\n",
    "    parameters = initialize_parameters()\n",
    "    Z3 = forward_propagation(X, parameters)\n",
    "    print(\"Z3 = \" + str(Z3))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**: \n",
    "\n",
    "<table> \n",
    "    <tr> \n",
    "        <td>\n",
    "            **Z3**\n",
    "        </td>\n",
    "        <td>\n",
    "        Tensor(\"Add_2:0\", shape=(6, ?), dtype=float32)\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You may have noticed that the forward propagation doesn't output any cache. You will understand why below, when we get to brackpropagation."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.4 Compute cost\n",
    "\n",
    "As seen before, it is very easy to compute the cost using:\n",
    "```python\n",
    "tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = ..., labels = ...))\n",
    "```\n",
    "**Question**: Implement the cost function below. \n",
    "- It is important to know that the \"`logits`\" and \"`labels`\" inputs of `tf.nn.softmax_cross_entropy_with_logits` are expected to be of shape (number of examples, num_classes). We have thus transposed Z3 and Y for you.\n",
    "- Besides, `tf.reduce_mean` basically does the summation over the examples."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: compute_cost \n",
    "\n",
    "def compute_cost(Z3, Y):\n",
    "    \"\"\"\n",
    "    Computes the cost\n",
    "    \n",
    "    Arguments:\n",
    "    Z3 -- output of forward propagation (output of the last LINEAR unit), of shape (6, number of examples)\n",
    "    Y -- \"true\" labels vector placeholder, same shape as Z3\n",
    "    \n",
    "    Returns:\n",
    "    cost - Tensor of the cost function\n",
    "    \"\"\"\n",
    "    \n",
    "    # to fit the tensorflow requirement for tf.nn.softmax_cross_entropy_with_logits(...,...)\n",
    "    logits = tf.transpose(Z3)\n",
    "    labels = tf.transpose(Y)\n",
    "    \n",
    "    ### START CODE HERE ### (1 line of code)\n",
    "    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = logits, labels = labels))\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    return cost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cost = Tensor(\"Mean:0\", shape=(), dtype=float32)\n"
     ]
    }
   ],
   "source": [
    "tf.reset_default_graph()\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    X, Y = create_placeholders(12288, 6)\n",
    "    parameters = initialize_parameters()\n",
    "    Z3 = forward_propagation(X, parameters)\n",
    "    cost = compute_cost(Z3, Y)\n",
    "    print(\"cost = \" + str(cost))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**: \n",
    "\n",
    "<table> \n",
    "    <tr> \n",
    "        <td>\n",
    "            **cost**\n",
    "        </td>\n",
    "        <td>\n",
    "        Tensor(\"Mean:0\", shape=(), dtype=float32)\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.5 - Backward propagation & parameter updates\n",
    "\n",
    "This is where you become grateful to programming frameworks. All the backpropagation and the parameters update is taken care of in 1 line of code. It is very easy to incorporate this line in the model.\n",
    "\n",
    "After you compute the cost function. You will create an \"`optimizer`\" object. You have to call this object along with the cost when running the tf.session. When called, it will perform an optimization on the given cost with the chosen method and learning rate.\n",
    "\n",
    "For instance, for gradient descent the optimizer would be:\n",
    "```python\n",
    "optimizer = tf.train.GradientDescentOptimizer(learning_rate = learning_rate).minimize(cost)\n",
    "```\n",
    "\n",
    "To make the optimization you would do:\n",
    "```python\n",
    "_ , c = sess.run([optimizer, cost], feed_dict={X: minibatch_X, Y: minibatch_Y})\n",
    "```\n",
    "\n",
    "This computes the backpropagation by passing through the tensorflow graph in the reverse order. From cost to inputs.\n",
    "\n",
    "**Note** When coding, we often use `_` as a \"throwaway\" variable to store values that we won't need to use later. Here, `_` takes on the evaluated value of `optimizer`, which we don't need (and `c` takes the value of the `cost` variable). "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.6 - Building the model\n",
    "\n",
    "Now, you will bring it all together! \n",
    "\n",
    "**Exercise:** Implement the model. You will be calling the functions you had previously implemented."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\n",
    "def model(X_train, Y_train, X_test, Y_test, learning_rate = 0.0001,\n",
    "          num_epochs = 1500, minibatch_size = 32, print_cost = True):\n",
    "    \"\"\"\n",
    "    Implements a three-layer tensorflow neural network: LINEAR->RELU->LINEAR->RELU->LINEAR->SOFTMAX.\n",
    "    \n",
    "    Arguments:\n",
    "    X_train -- training set, of shape (input size = 12288, number of training examples = 1080)\n",
    "    Y_train -- test set, of shape (output size = 6, number of training examples = 1080)\n",
    "    X_test -- training set, of shape (input size = 12288, number of training examples = 120)\n",
    "    Y_test -- test set, of shape (output size = 6, number of test examples = 120)\n",
    "    learning_rate -- learning rate of the optimization\n",
    "    num_epochs -- number of epochs of the optimization loop\n",
    "    minibatch_size -- size of a minibatch\n",
    "    print_cost -- True to print the cost every 100 epochs\n",
    "    \n",
    "    Returns:\n",
    "    parameters -- parameters learnt by the model. They can then be used to predict.\n",
    "    \"\"\"\n",
    "    \n",
    "    ops.reset_default_graph()                         # to be able to rerun the model without overwriting tf variables\n",
    "    tf.set_random_seed(1)                             # to keep consistent results\n",
    "    seed = 3                                          # to keep consistent results\n",
    "    (n_x, m) = X_train.shape                          # (n_x: input size, m : number of examples in the train set)\n",
    "    n_y = Y_train.shape[0]                            # n_y : output size\n",
    "    costs = []                                        # To keep track of the cost\n",
    "    \n",
    "    # Create Placeholders of shape (n_x, n_y)\n",
    "    ### START CODE HERE ### (1 line)\n",
    "    X, Y = create_placeholders(n_x, n_y)\n",
    "    ### END CODE HERE ###\n",
    "\n",
    "    # Initialize parameters\n",
    "    ### START CODE HERE ### (1 line)\n",
    "    parameters = initialize_parameters()\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    # Forward propagation: Build the forward propagation in the tensorflow graph\n",
    "    ### START CODE HERE ### (1 line)\n",
    "    Z3 = forward_propagation(X, parameters)\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    # Cost function: Add cost function to tensorflow graph\n",
    "    ### START CODE HERE ### (1 line)\n",
    "    cost = compute_cost(Z3, Y)\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    # Backpropagation: Define the tensorflow optimizer. Use an AdamOptimizer.\n",
    "    ### START CODE HERE ### (1 line)\n",
    "    optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    # Initialize all the variables\n",
    "    init = tf.global_variables_initializer()\n",
    "\n",
    "    # Start the session to compute the tensorflow graph\n",
    "    with tf.Session() as sess:\n",
    "        \n",
    "        # Run the initialization\n",
    "        sess.run(init)\n",
    "        \n",
    "        # Do the training loop\n",
    "        for epoch in range(num_epochs):\n",
    "\n",
    "            epoch_cost = 0.                       # Defines a cost related to an epoch\n",
    "            num_minibatches = int(m / minibatch_size) # number of minibatches of size minibatch_size in the train set\n",
    "            seed = seed + 1\n",
    "            minibatches = random_mini_batches(X_train, Y_train, minibatch_size, seed)\n",
    "\n",
    "            for minibatch in minibatches:\n",
    "\n",
    "                # Select a minibatch\n",
    "                (minibatch_X, minibatch_Y) = minibatch\n",
    "                \n",
    "                # IMPORTANT: The line that runs the graph on a minibatch.\n",
    "                # Run the session to execute the \"optimizer\" and the \"cost\", the feedict should contain a minibatch for (X,Y).\n",
    "                ### START CODE HERE ### (1 line)\n",
    "                _ , minibatch_cost = sess.run([optimizer, cost], feed_dict={X: minibatch_X, Y: minibatch_Y})\n",
    "                ### END CODE HERE ###\n",
    "                \n",
    "                epoch_cost += minibatch_cost / num_minibatches\n",
    "\n",
    "            # Print the cost every epoch\n",
    "            if print_cost == True and epoch % 100 == 0:\n",
    "                print (\"Cost after epoch %i: %f\" % (epoch, epoch_cost))\n",
    "            if print_cost == True and epoch % 5 == 0:\n",
    "                costs.append(epoch_cost)\n",
    "                \n",
    "        # plot the cost\n",
    "        plt.plot(np.squeeze(costs))\n",
    "        plt.ylabel('cost')\n",
    "        plt.xlabel('iterations (per tens)')\n",
    "        plt.title(\"Learning rate =\" + str(learning_rate))\n",
    "        plt.show()\n",
    "\n",
    "        # lets save the parameters in a variable\n",
    "        parameters = sess.run(parameters)\n",
    "        print(\"Parameters have been trained!\")\n",
    "\n",
    "        # Calculate the correct predictions\n",
    "        correct_prediction = tf.equal(tf.argmax(Z3), tf.argmax(Y))\n",
    "\n",
    "        # Calculate accuracy on the test set\n",
    "        accuracy = tf.reduce_mean(tf.cast(correct_prediction, \"float\"))\n",
    "\n",
    "        print(\"Train Accuracy:\", accuracy.eval({X: X_train, Y: Y_train}))\n",
    "        print(\"Test Accuracy:\", accuracy.eval({X: X_test, Y: Y_test}))\n",
    "        \n",
    "        return parameters"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "Run the following cell to train your model! On our machine it takes about 5 minutes. Your \"Cost after epoch 100\" should be 1.016458. If it's not, don't waste time; interrupt the training by clicking on the square (⬛) in the upper bar of the notebook, and try to correct your code. If it is the correct cost, take a break and come back in 5 minutes!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Cost after epoch 0: 1.855702\n",
      "Cost after epoch 100: 1.016458\n",
      "Cost after epoch 200: 0.733102\n",
      "Cost after epoch 300: 0.572940\n",
      "Cost after epoch 400: 0.468774\n",
      "Cost after epoch 500: 0.381021\n",
      "Cost after epoch 600: 0.313822\n",
      "Cost after epoch 700: 0.254158\n",
      "Cost after epoch 800: 0.203829\n",
      "Cost after epoch 900: 0.166421\n",
      "Cost after epoch 1000: 0.141486\n",
      "Cost after epoch 1100: 0.107580\n",
      "Cost after epoch 1200: 0.086270\n",
      "Cost after epoch 1300: 0.059371\n",
      "Cost after epoch 1400: 0.052228\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nXJQwREQkLv8fMR7jhfsg1q4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa3d5610898>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parameters have been trained!\n",
      "Train Accuracy: 0.999074\n",
      "Test Accuracy: 0.716667\n"
     ]
    }
   ],
   "source": [
    "parameters = model(X_train, Y_train, X_test, Y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**:\n",
    "\n",
    "<table> \n",
    "    <tr> \n",
    "        <td>\n",
    "            **Train Accuracy**\n",
    "        </td>\n",
    "        <td>\n",
    "        0.999074\n",
    "        </td>\n",
    "    </tr>\n",
    "    <tr> \n",
    "        <td>\n",
    "            **Test Accuracy**\n",
    "        </td>\n",
    "        <td>\n",
    "        0.716667\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>\n",
    "\n",
    "Amazing, your algorithm can recognize a sign representing a figure between 0 and 5 with 71.7% accuracy.\n",
    "\n",
    "**Insights**:\n",
    "- Your model seems big enough to fit the training set well. However, given the difference between train and test accuracy, you could try to add L2 or dropout regularization to reduce overfitting. \n",
    "- Think about the session as a block of code to train the model. Each time you run the session on a minibatch, it trains the parameters. In total you have run the session a large number of times (1500 epochs) until you obtained well trained parameters."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.7 - Test with your own image (optional / ungraded exercise)\n",
    "\n",
    "Congratulations on finishing this assignment. You can now take a picture of your hand and see the output of your model. To do that:\n",
    "    1. Click on \"File\" in the upper bar of this notebook, then click \"Open\" to go on your Coursera Hub.\n",
    "    2. Add your image to this Jupyter Notebook's directory, in the \"images\" folder\n",
    "    3. Write your image's name in the following code\n",
    "    4. Run the code and check if the algorithm is right!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Your algorithm predicts: y = 3\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nNwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa3c34cee48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import scipy\n",
    "from PIL import Image\n",
    "from scipy import ndimage\n",
    "\n",
    "## START CODE HERE ## (PUT YOUR IMAGE NAME) \n",
    "my_image = \"thumbs_up.jpg\"\n",
    "## END CODE HERE ##\n",
    "\n",
    "# We preprocess your image to fit your algorithm.\n",
    "fname = \"images/\" + my_image\n",
    "image = np.array(ndimage.imread(fname, flatten=False))\n",
    "my_image = scipy.misc.imresize(image, size=(64,64)).reshape((1, 64*64*3)).T\n",
    "my_image_prediction = predict(my_image, parameters)\n",
    "\n",
    "plt.imshow(image)\n",
    "print(\"Your algorithm predicts: y = \" + str(np.squeeze(my_image_prediction)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You indeed deserved a \"thumbs-up\" although as you can see the algorithm seems to classify it incorrectly. The reason is that the training set doesn't contain any \"thumbs-up\", so the model doesn't know how to deal with it! We call that a \"mismatched data distribution\" and it is one of the various of the next course on \"Structuring Machine Learning Projects\"."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "<font color='blue'>\n",
    "**What you should remember**:\n",
    "- Tensorflow is a programming framework used in deep learning\n",
    "- The two main object classes in tensorflow are Tensors and Operators. \n",
    "- When you code in tensorflow you have to take the following steps:\n",
    "    - Create a graph containing Tensors (Variables, Placeholders ...) and Operations (tf.matmul, tf.add, ...)\n",
    "    - Create a session\n",
    "    - Initialize the session\n",
    "    - Run the session to execute the graph\n",
    "- You can execute the graph multiple times as you've seen in model()\n",
    "- The backpropagation and optimization is automatically done when running the session on the \"optimizer\" object."
   ]
  }
 ],
 "metadata": {
  "coursera": {
   "course_slug": "deep-neural-network",
   "graded_item_id": "BFd89",
   "launcher_item_id": "AH2rK"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
